upstream: premature connection destruction fix #7728
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR addresses an issue caused by
flb_upstream_conn_timeouts
when a connection times out in a cycle whereFLB_ENGINE_LOOP_MAX_ITER
is exceeded.What this means is the priority event loop will defer processing of the event for the next overall iteration which happens after
flb_upstream_conn_pending_destroy_list
is invoked by the thread which results in a coroutine being left suspended indefinitely.The main issue was that
flb_upstream_conn_timeouts
immediately performed most of the connection disposal and marked the connection to be reaped at the end of the cycle.In order to prevent this while retaining some of the required functionality we now only perform the connection shutdown and inject an event in order to force the engine to resume the coroutine as soon as possible.